GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( c335e5...c6cb10 )
by Benjamin
01:46
created

datasource.js ➔ ... ➔ ???   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
c 0
b 0
f 0
nc 1
dl 0
loc 1
rs 10
nop 2
1
import { fromJS } from 'immutable';
2
import { SET_DATA,
3
    ADD_NEW_ROW,
4
    CLEAR_FILTER_LOCAL,
5
    DISMISS_EDITOR,
6
    FILTER_DATA,
7
    REMOVE_ROW,
8
    SAVE_ROW,
9
    SET_TREE_NODE_VISIBILITY,
10
    SET_TREE_DATA_PARTIAL,
11
    SORT_DATA,
12
    UPDATE_ROW
13
} from '../../constants/ActionTypes';
14
15
import { generateLastUpdate } from './../../util/lastUpdate';
16
import { getTreePathFromId } from './../../util/getTreePathFromId';
17
import { setTreeValue } from './../../util/setTreeValue';
18
import { treeToFlatList } from './../../util/treeToFlatList';
19
20
const initialState = fromJS({ lastUpdate: generateLastUpdate() });
0 ignored issues
show
Unused Code introduced by
The constant initialState seems to be never used. Consider removing it.
Loading history...
21
22
export default function dataSource(state = initialState, action) {
23
    switch (action.type) {
24
25
    case SET_DATA:
26
        return state.setIn([action.stateKey], fromJS({
27
            data: action.data,
28
            proxy: action.data,
29
            total: action.total || action.data.length,
30
            treeData: action.treeData,
31
            gridType: action.gridType || 'grid',
32
            currentRecords: action.currentRecords || action.data,
33
            lastUpdate: generateLastUpdate()
34
        }));
35
36
    case SET_TREE_DATA_PARTIAL:
37
        const treeVals = state.getIn([action.stateKey, 'treeData']).toJS();
38
        const flattened = state.getIn([action.stateKey, 'data']).toJS();
39
        const pathToNode = [
40
            -1, ...getTreePathFromId(flattened, action.parentId)
41
        ];
42
        const newTreeValues = setTreeValue(
43
            treeVals, pathToNode, { children: action.data }
44
        );
45
46
        const newFlatList = treeToFlatList(newTreeValues);
47
48
        if (!action.showTreeRootNode) {
49
            newFlatList.shift();
50
        }
51
52
        return state.mergeIn([action.stateKey], fromJS({
53
            data: newFlatList,
54
            proxy: newFlatList,
55
            currentRecords: newFlatList,
56
            treeData: newTreeValues,
57
            total: newFlatList.length,
58
            lastUpdate: generateLastUpdate()
59
        }));
60
61
    case DISMISS_EDITOR:
62
        const previousData = state.getIn([action.stateKey, 'data']);
63
        const previousProxy = state.getIn([action.stateKey, 'proxy']);
64
        let previousTotal = state.getIn([action.stateKey, 'total']);
65
66
        // upon dismiss, if a new row was in edit
67
        // but isn't save, update the total to reflect that
68
        if (previousData
69
            && previousProxy
70
            && previousData.size > previousProxy.size) {
71
            previousTotal = previousProxy.size;
72
        }
73
74
        if (state.get(action.stateKey)) {
75
            return state.mergeIn([action.stateKey], fromJS({
76
                data: previousProxy,
77
                proxy: previousProxy,
78
                currentRecords: previousProxy,
79
                total: previousTotal,
80
                isEditing: false,
81
                lastUpdate: generateLastUpdate()
82
            }));
83
        }
84
85
        return state;
86
87
    case REMOVE_ROW:
88
        const remainingRows = state
89
            .getIn([action.stateKey, 'data'])
90
            .remove(action.rowIndex || 0, 1);
91
92
        return state.mergeIn([action.stateKey], fromJS({
93
            data: remainingRows,
94
            proxy: remainingRows,
95
            currentRecords: remainingRows,
96
            lastUpdate: generateLastUpdate()
97
        }));
98
99
    case UPDATE_ROW:
100
101
        const existingData = state.getIn([action.stateKey, 'data']);
102
        const prevRow = existingData
103
            ? existingData.get(action.rowIndex)
104
            : null;
105
106
        if (!prevRow) {
107
            return state;
108
        }
109
110
        const updatedRow = prevRow.merge(action.values);
111
        const updatedData = state.getIn([action.stateKey, 'data'])
112
            .set(action.rowIndex, updatedRow);
113
114
        return state.mergeIn([action.stateKey], {
115
            data: updatedData,
116
            proxy: updatedData,
117
            currentRecords: updatedData,
118
            lastUpdate: generateLastUpdate()
119
        });
120
121
    case ADD_NEW_ROW:
122
123
        const existingState = state.get(action.stateKey);
124
        const isEditing = existingState && existingState.get('isEditing');
125
        const data = existingState && existingState.get('data');
126
127
        if (existingState && isEditing) {
128
            return state;
129
        }
130
131
        const newRow = data
132
            && data.size > 0
133
            && data.get(0)
134
            ? data.get(0).map((k, v) => v = '')
0 ignored issues
show
Unused Code introduced by
The parameter k is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Unused Code introduced by
The parameter v is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Unused Code introduced by
The variable v seems to be never used. Consider removing it.
Loading history...
135
            : fromJS({});
136
137
        const newData = data.unshift(newRow);
138
139
        return state.mergeIn([action.stateKey], fromJS({
140
            data: newData,
141
            proxy: data,
142
            isEditing: true,
143
            lastUpdate: generateLastUpdate(),
144
            total: newData.size
145
        }));
146
147
    case SET_TREE_NODE_VISIBILITY:
148
149
        const treeFlatList = state.getIn([action.stateKey, 'data']).toJS();
150
        const tree = state.getIn([action.stateKey, 'treeData']).toJS();
151
        const currentVisibility = !!treeFlatList
152
            .find(node => node._id === action.id)._hideChildren;
153
        const path = [-1, ...getTreePathFromId(treeFlatList, action.id)];
154
        const newTree = setTreeValue(
155
            tree, path, { _hideChildren: !currentVisibility
156
        });
157
        const flattenedTree = treeToFlatList(newTree);
158
159
        // remove root-node
160
        if (!action.showTreeRootNode) {
161
            flattenedTree.shift();
162
        }
163
164
        return state.mergeIn([action.stateKey], fromJS({
165
            data: flattenedTree,
166
            currentRecords: flattenedTree,
167
            treeData: newTree,
168
            lastUpdate: generateLastUpdate()
169
        }));
170
171
    case SAVE_ROW:
172
        const gridData = state
173
            .getIn([action.stateKey, 'data'])
174
            .set(action.rowIndex, fromJS(action.values));
175
176
        return state.mergeIn([action.stateKey], fromJS({
177
            data: gridData,
178
            proxy: gridData,
179
            currentRecords: gridData,
180
            lastUpdate: generateLastUpdate()
181
        }));
182
183
    case SORT_DATA:
184
        return state.mergeIn([action.stateKey], {
185
            data: action.data,
186
            lastUpdate: generateLastUpdate()
187
        });
188
189
    case CLEAR_FILTER_LOCAL:
190
191
        const proxy = state.getIn([action.stateKey, 'proxy']);
192
        const prevData = state.getIn([action.stateKey, 'data']);
193
        const recs = proxy || prevData;
194
195
        return state.mergeIn([action.stateKey], {
196
            data: recs,
197
            proxy: recs,
198
            currentRecords: recs,
199
            lastUpdate: generateLastUpdate()
200
        });
201
202
    case FILTER_DATA:
203
        return state.mergeIn([action.stateKey], {
204
            data: action.data,
205
            lastUpdate: generateLastUpdate()
206
        });
207
208
    default:
209
210
        return state;
211
    }
212
}
213